package demo1;

/**
 * 资源抽象类，定义了资源的基本属性和方法
 */
abstract class Resource {
    // 资源名称
    protected String resourceName;
    // 资源类型
    protected String resourceType;

    /**
     * 构造函数，用于初始化资源信息
     * @param resourceName 资源名称
     * @param resourceType 资源类型
     */
    public Resource(String resourceName, String resourceType) {
        this.resourceName = resourceName;
        this.resourceType = resourceType;
    }

    /**
     * 抽象方法，用于发放资源
     */
    public abstract void distribute();

    /**
     * 抽象方法，用于领取资源
     */
    public abstract void receive();
}

/**
 * 具体资源类，继承自 Resource 抽象类
 */
class SchoolResource extends Resource {
    /**
     * 构造函数，用于初始化学校资源信息
     * @param resourceName 资源名称
     * @param resourceType 资源类型
     */
    public SchoolResource(String resourceName, String resourceType) {
        super(resourceName, resourceType);
    }

    /**
     * 实现发放资源的方法
     */
    @Override
    public void distribute() {
        System.out.println("发放 " + resourceType + " 类型的 " + resourceName);
    }

    /**
     * 实现领取资源的方法
     */
    @Override
    public void receive() {
        System.out.println("领取 " + resourceType + " 类型的 " + resourceName);
    }
}

/**
 * 资源发放管理类，用于管理资源的发放和领取操作
 */
public class ResourceDistribution {
    /**
     * 发放资源的静态方法
     * @param resource 资源对象
     */
    public static void distributeResource(Resource resource) {
        resource.distribute();
    }

    /**
     * 领取资源的静态方法
     * @param resource 资源对象
     */
    public static void receiveResource(Resource resource) {
        resource.receive();
    }
}